package com.yfq.springframework.support;

import com.yfq.springframework.core.io.Resource;
import com.yfq.springframework.core.io.ResourceLoader;

import java.io.IOException;

/**
 * @author 姚凤桥
 * @date 2022/12/12 15:36
 * @description
 */
public interface BeanDefinitionReader {
    /**
     * 获取BeanDefinitionRegistry
     *
     * @return BeanDefinitionRegistry
     */
    BeanDefinitionRegistry getRegistry();

    /**
     * 获取ResourceLoader
     *
     * @return ResourceLoader
     */
    ResourceLoader getResourceLoader();

    /**
     * 加载资源，注册BeanDefinition
     *
     * @param resource 资源
     */
    void loadBeanDefinitions(Resource resource) throws IOException;

    /**
     * 加载资源，注册BeanDefinition
     *
     * @param resource 支持多个资源
     */
    void loadBeanDefinitions(Resource... resource) throws IOException;

    /**
     * 通过资源路径加载BeanDefinition
     *
     * @param location 资源路径
     */
    void loadBeanDefinitions(String location) throws IOException;

}
